#include "flag.h"

void api_flag_init(T_flag *p,unsigned char *ptr,unsigned short byteCnt)
{
	memset(ptr,0,byteCnt);
	p->pFlag = ptr;
	p->byteCnt = byteCnt;
}

unsigned char api_flag_get(T_flag *p,unsigned int flag)
{
	unsigned char res;
		
	FLAG_ASSERT(((flag + 8) / 8) > p->byteCnt);

	res = p->pFlag[flag / 8] & (1 << (flag % 8)); 

	return ((res==0) ? 0:1);
}

void api_flag_set(T_flag *p,unsigned int flag)
{
	FLAG_ASSERT(((flag + 8) / 8) > p->byteCnt);

	p->pFlag[flag / 8] |= (1 << (flag % 8)); 
}

void api_flag_clr(T_flag *p,unsigned int flag)
{

	FLAG_ASSERT(((flag + 8) / 8) > p->byteCnt);

	p->pFlag[flag / 8] &= ~(1 << (flag % 8)); 
}
